package com.leetcode.q27;

/**
 * <p> description: 给定数组nums和值val，原地移除nums中所有值等于val的元素
 *
 * 我的思路，遇到val就从尾部往前找，找到不为val的和它替换，最后，遇到val且没有能和他替换的，则寻找完毕
 * 但是代码没设计好，一些情况总是得不到想要的结果
 *
 *
 * 看了下人家的快慢指针，简直是简单有方便，而且不会有奇怪的错误
 * </p>
 *
 * @author tanzc
 * @date 2022/4/1
 **/
public class RemoveElement {

    public int removeElement(int[] nums, int val) {
        int k = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] != val) {
                nums[k++] = nums[i];
            }
        }
        return k;
    }

    public static void main(String[] args) {
        RemoveElement removeElement = new RemoveElement();
//        int[] nums = {1, 2, 3, 4, 2, 3, 1, 4, 5, 3, 4, 2, 1};
        int[] nums = {3};
        int k = removeElement.removeElement(nums, 3);
        for (int i = 0; i < k; i++) {
            System.out.printf("%d ", nums[i]);
        }
        System.out.println();
    }
}
